home *** CD-ROM | disk | FTP | other *** search
- include farnear.inc
-
- _TEXT segment byte public 'CODE'
- assume cs:_TEXT
-
- program _getkey
- ; int getkey(void)
- l1: mov ah,1
- int 16h
- mov ah,0
- jz short l2
- int 16h
- jmp short l1
- l2: int 16h
- xor ah,ah
- ret
- _getkey endp
-
- program _diskserv
- ; int diskserv(int op, int drive, int head, int track, int sector,
- ; int nsects, void far *buffer)
- push bp
- mov bp,sp
-
- mov ah,arglist[0] ; operation
- mov al,arglist[10] ; number of sectors
-
- mov cx,arglist[6] ; track number
- ; and ch,3 ; must not need for valid number
- ror ch,1
- ror ch,1
- xchg ch,cl
- ; mov dl,arglist[8] ; sector number
- ; and dl,3fh ; must not need for valid number
- ; or cl,dl
- or cl,arglist[8] ; sector number
-
- mov dl,arglist[2] ; drive number
- mov dh,arglist[4] ; head number
- cmp ah,8 ; get drive params?
- je short eight
- les bx,arglist[12] ; buffer address
- int 13h
- jc short end
- xor ah,ah
- jmp short end
- eight:
- push di
- int 13h
- jc short finish
- les di,arglist[12] ; buffer address
- xor ah,ah
- mov al,dl
- stosw ; number of disks
- mov al,dh
- stosw ; max head number
- mov dl,cl
- mov ax,cx
- xchg ah,al
- mov cl,6
- shr ah,cl
- stosw ; max cylinder number
- mov al,dl
- and ax,3fh
- stosw ; max sector number
- finish: ; Note: AH = error code
- pop di
- end:
- mov al,ah
- xor ah,ah
- pop bp
- ret
- _diskserv endp
-
- _TEXT ends
- end